Podemos decir que un agente es un programa software que cumple con los siguientes elementos clave:
Tiene sensores para percibir el entorno en el que habita.
Tiene actuadores para reaccionar a lo que percibe.
Es autónomo y capaz de adaptarse a entornos dinámicos con aprendizaje.
Es persistente con el tiempo y cumple su propia agenda.
Es decir, para describir el comportamiento percibido desde fuera del agente, este requiere percibir el entorno a través de sensores, lo que le permite establecer acciones concretas a través de los actuadores

Podemos hablar de:
Agentes virtualizados: softbots (bots).
Agentes móviles: son agentes que se mueven y se basan en tres ejes:
Movilidad: Tienen capacidad de movimiento, pudiendo ofrecer servicios de manera local o distribuida.
Sociabilidad: Tienen capacidad de comunicación, colaboración, negociación...
Inteligencia.
Estos tres ejes son indispensables en un agente móvil, pues de nada serviría un robot con capacidades de navegación inteligentes si no se puede mover.
Totalmente accesible: si el agente es capaz de detectar todos los aspectos relevantes del entorno para poder definir su estado.
Parcialmente accesible: si no tiene toda la información necesaria. En este caso el agente deberá inferir el ambiente.
Determinista: cuando el estado actual del agente se debe únicamente al estado anterior y la acción realizada a partir de ese estado.
Ejemplo: El agente esta en un lugar y ha llegado a ese lugar porque se encontraba un paso más atrás y ha dado un paso hacia adelante.
Indeterminista: cuando el estado actual del agente no se debe únicamente al estado anterior y la acción realizada a partir de ese estado.
Ejemplo: El agente se mueve en un ambiente con elementos móviles o cambiantes. Cuando a un robot de limpieza le cambias los objetos de sitio.
Episódico: cuando la calidad de la actuación del agente depende únicamente del estado actual en el que se encuentra.
No episódico: cuando la calidad de la actuación del agente no depende únicamente del estado actual en el que se encuentra, sino también de lo que ha realizado anteriormente.
Ejemplo: Una partida de ajedrez, porque con el movimiento de una ficha pueden pasar varias cosas: ganar la partida, perder la partida o que no pase nada. Esto es debido a que la calidad del movimiento no depende solo de donde esta, sino de todo lo que ocurre.
Por eso, los sistemas no episódicos necesitan planificación.
Estático: cuando no puede cambiar.
Dinámico: cuando puede cambiar.
Esto dependerá del ciclo de actualización de la percepción del ambiente.
Discreto: cuando el ciclo de ejecución depende de algún evento.
Ejemplo: En una partida de ajedrez no tiene sentido comprobar el estado cada milisegundo, sino sólo cuando el contrincante le pase le turno.
Continuo: cuando el ciclo de ejecución se basa en un tiempo fijo.
Ejemplo: Un robot de limpieza debe tener un tiempo de muestreo constante y periódico, para poder capturar los sensores y realizar actuaciones.
Este tipo de agentes funcionan en ambientes totalmente accesibles.
Toman decisiones en base a reglas de acción / reacción que le permiten realizar medidas sobre el entorno y desencadenar alguna acción establecida con el programa del agente.
111Funcion Reflejo <- Agente (estado, ubicación)2 Si estado = sucio3 return limpia;4 Fin Si5 6 Si ubicación = A7 return Derecha;8 Si ubicación = b9 return Izquierda;10 Fin Si11Fin Funcion

Este tipo de agentes funcionan en ambientes parcialmente accesibles, lo que implica que ante una misma percepción pueden ocurrir acciones diferentes.
La forma de manejar una accesibilidad parcial es que el agente guarde un registro que le permita diferenciar estados aparentemente iguales. Es decir, tiene que inferir y realizar un modelo.
Ejemplo: Entro en una habitación a oscuras con las manos hacia adelante y voy caminando. En un momento determinado me choco con algo en las piernas, así que me detengo y cambio el rumbo, pero guardo en mi memoria que en ese lugar hay un objeto, así la próxima vez que vuelva, aunque yo no vea nada delante, recordaré que había algo en ese lugar y tratare de esquivarlo.
Las acción dependerá de la percepción y del estado interno anterior (modelo).
Además, estos agentes tienen la función actualizar, donde se actualizará el estado interno a partir del estado actual y las nuevas percepciones.
Un ejemplo real sería un coche autónomo, donde su sistema de percepción es una cámara. Si encuentra un obstáculo que impide la visión, el coche de delate frena o cambia de carril...
En condiciones normales actuará como un agente reactivo simple.
En condiciones de lluvia, inferirá el estado con percepción parcial y tomara una decisión en basé al modelo.

Los agentes basados en objetivos, además de la información de estado, tienen información de meta (planificación) que describe situaciones deseables.
Tienen en cuenta los acontecimientos futuros y actúan razonando sobre qué acciones lograrán el objetivo.
Un agente basado en objetivos aumenta la capacidad del agente basado en modelo al disponer de la información del objetivo.

Los agentes basados en utilidad son agentes basados en metas pero que tiene una planificación inteligente y de calidad, que les permiten alcanzar sus objetivos de una manera óptima.
Son útiles cuando hay múltiples alternativas de alcanzar un objetivo y deben elegir cual es la mejor acción a realizar.
La calidad consiste en alcanzar la meta optimizando otros parámetros valorables como: coste, esfuerzo, tiempo... Para ello, debemos realizar una planificación inteligente que me diga que acción es mejor tomar para alcanzar mi objetivo de manera óptima.
Existe la posibilidad de tener varias metas:
Si estas metas entran en conflicto o si no se pueden cumplir todas las metas, entrará en juego la función de utilidad.
La función de utilidad es esencialmente una internalización de la medida de rendimiento, donde decidirá las acciones a realizar para maximizar su objetivo.

Un SMA (Sistema multi-agente) es un sistema compuesto por múltiples agentes inteligentes que interactúan entre ellos. Los sistemas multi-agente pueden ser utilizados para resolver problemas que son difíciles o imposibles de resolver por un agente individual.
Son arquitecturas que están compuestas por agentes reactivos y tienen un comportamiento acción/reacción.
Al contener agentes reactivos, obtenemos un conjunto de tareas jerarquizadas a partir de los datos recibidos del entorno.
Esta arquitectura contiene unas reglas predefinidas que proporcionan rapidez de reacción.
Son utilizadas en entornos que exigen reacciones rápidas como la robótica móvil y sistemas cambiantes.
Son arquitecturas que suelen estar compuestas por agentes basados en metas y agentes basados en utilidad ya que tienen en común un sistema de planificación.
Modelo BDI (Belief, Desire, Intention):
Belief (Creencia): Es lo que el agente conoce, es decir, valores exactos que el agente percibe del ambiente.
Desire (Deseo / Objetivo): Siempre tiene en cuenta el objetivo final. En base a lo que creo y en base a las metas puedo tomar determinadas decisiones, ayudando a la planificación.
Ejemplo: En una navegación, una persona se puede perder y después volver al camino correcto. Esto se debe a que siempre tenemos el objetivo en mente.
Intention (Intención): Es la capacidad que tiene un sistema inteligente en modificar sus propias planificaciones.
Son arquitecturas multi-agente basadas en capas, combinando arquitecturas reactivas y deliberativas.
Suelen dividirse en dos enfoques:
Capas verticales: solo una capa tiene acceso a la percepción reactiva (acceso al sistema de manera rápida) y el resto a la deliberativa (las que planifican).
Capas horizontales: todas las capas tienen acceso a la percepción reactiva y tienen parte deliberativa.
Nula: los agentes no se pueden comunicar entre ellos.
Primitiva: datos preestablecidos que pueden comunicar.
De pizarra: espacio de memoria compartido donde leer y escribir información.
Intercambio de planes entre agentes: permite adaptar estrategias entre los agentes, aunque conlleva un alto coste computacional.
Intercambio de mensajes: envío de información entre agentes que puede implicar el cambio de comportamiento del resto de agentes.
De alto nivel: todos los agentes se comunican con todos.
Puede existir colaboración entre agentes, donde para una misma meta, varios agentes tengan que colaborar.
Para que exista una colaboración entre agentes, debe existir:
Los agentes tienen que tener capacidad de comunicación.
Tiene que existir una situación donde los dos agentes coincidan.
Los agentes deben tener libertad de decisión para que la relación sea autónoma.
La relación debe ser dinámica, permitiendo a los agentes cambiar sus condiciones.
Para organizarse, los agentes deben definir sus interrelaciones: delegando tareas, sincronizándose, negociando...
Coordinación global: un agente verifica los conflictos.
Coordinación individual: los agentes tienen autonomía total.
En un sistema multi-agente colaborativo pueden aparecer conflictos (las acciones de algunos agentes pueden hacer que la función de evaluación de otros baje y viceversa), por eso tiene que haber un sistema de negociación.
El sistema de negociación es clave para que la coordinación funcione, siendo este el responsable de tomar una decisión sobre dos funciones de evaluación confrontadas.
El sistema de negociación se basa en un sistema de apuestas, donde cada agente propone una serie de resultados si ejecuta su acción y se toma una decisión.